package com.lzw.breezeNovel.model.entity.query;

import lombok.Data;

import java.util.ArrayList;
import java.util.List;

/**
 * 分页结果类
 * @param <T>
 */
@Data
@SuppressWarnings("all")
public class PaginationResultQuery<T> {
    /** 总记录数 */
    private Integer totalCount;
    /** 每页显示条数 */
    private Integer pageSize;
    /** 当前页码 */
    private Integer pageNo;
    /** 总页数 */
    private Integer pageTotal;
    /** 数据列表 */
    private List<T> list = new ArrayList<>();

    /**
     * 分页结果构造器
     * 使用给定的参数初始化 PaginationResultVo 对象。
     * 如果传入的页码为0，则将其设置为1。
     * @param totalCount  总记录数，表示数据库中符合条件的总记录数量。
     * @param pageSize    每页显示的记录数。
     * @param pageNo      当前页码，允许传入0，若为0则自动设置为1。
     * @param pageTotal   总页数，表示根据总记录数和每页显示记录数计算出的总页数。
     * @param list        当前页的数据列表，包含了一页的数据记录。
     */
    public PaginationResultQuery(Integer totalCount, Integer pageSize, Integer pageNo, Integer pageTotal, List<T> list) {
        if(pageNo == 0 || pageNo == null)
        {
            this.pageNo = 1;
        }
        this.totalCount = totalCount;
        this.pageSize = pageSize;
        this.pageNo = pageNo;
        this.pageTotal = pageTotal;
        this.list = list;
    }

    /**
     * 分页结果构造函数

     * @param totalCount 总记录数
     * @param pageSize   每页显示条数
     * @param pageNo     当前页码
     * @param list       当前页的数据列表
     */
    public PaginationResultQuery(Integer totalCount, Integer pageSize, Integer pageNo, List<T> list)
    {
         this.pageNo = pageNo;
         this.pageSize = pageSize;
         this.totalCount = totalCount;
         this.list = list;
    }
}
